
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>微服务架构中设计高可用和故障恢复机制 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>微服务架构中设计高可用和故障恢复机制 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">在微服务架构中，"熔断器模式"（Circuit Breaker Pattern）的核心作用是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">熔断器模式的核心作用是容错和故障隔离。当检测到下游服务不稳定或超时时，熔断器会主动中断调用，避免浪费资源，并防止故障在系统中扩散，影响整个服务链。</div>
          </div>
          <div class="card-source">来源: 微服务高可用性设计原则 -> 3. 熔断与降级策略</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在设计数据库高可用性时，"读写分离"策略是如何工作的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">读写分离策略将写操作定向到主数据库，而将读操作分发到多个从数据库。这样做可以有效减轻主数据库的压力，提升系统整体的性能和可用性。</div>
          </div>
          <div class="card-source">来源: 微服务高可用性设计原则 -> 5. 数据库的高可用性设计</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">在容灾机制中，恢复时间目标（RTO）和恢复点目标（RPO）分别指什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">恢复时间目标（RTO）指的是在灾难发生后，企业希望恢复正常业务运营的最晚时间。恢复点目标（RPO）则指在灾难发生时，企业可以容忍的数据丢失量，通常以时间来衡量。</div>
          </div>
          <div class="card-source">来源: 容灾机制 -> 1.2 容灾目标</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">请描述"蓝绿部署"（Blue-Green Deployment）的工作流程。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">蓝绿部署通过维护两个相同的生产环境（蓝色和绿色）来实现。首先，将新版本部署到未提供服务的绿色环境进行测试。验证通过后，将用户流量从当前活跃的蓝色环境切换到绿色环境。如果新版本出现问题，可以迅速将流量切回蓝色环境，实现快速回滚。</div>
          </div>
          <div class="card-source">来源: 持续交付与蓝绿部署 -> 2.2 工作流程</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">为了应对机房宕机等极端情况，"多数据中心部署"策略提供了哪两种主要的实现方法？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">主要有两种实现方法：1. 多活数据中心（Active-Active），即各个数据中心同时对外提供服务。2. 冷备与热备（Active-Passive），即一个数据中心作为主中心，另一个作为备份，当主中心宕机时由备份中心接管流量。</div>
          </div>
          <div class="card-source">来源: 服务高可用性策略 -> 5. 多数据中心部署与灾难恢复</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在故障恢复机制中，当发生暂时性故障（如网络抖动）时，系统通常会采用哪种重试机制来避免重试风暴？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">系统会引入重试机制，当操作失败时短暂等待后再次尝试。为了避免瞬间高负载下的重试风暴，通常会采用“指数退避算法”（Exponential Backoff），即每次重试的等待时间会逐渐增加。</div>
          </div>
          <div class="card-source">来源: 故障恢复机制 -> 3. 故障恢复</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">在数据高可用性设计中，同步复制和异步复制的关键区别是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">同步复制要求数据在所有副本上都成功写入后才确认操作完成，能确保强一致性，但会影响性能。异步复制则是在主节点写入完成后即确认操作，然后后台异步复制到其他节点，提高了响应性能，但可能存在数据短暂不一致的最终一致性问题。</div>
          </div>
          <div class="card-source">来源: 数据高可用性设计 -> 1. 数据冗余与复制</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">策略</div>
          <div class="card-question">微服务架构如何通过"自动扩展与弹性伸缩"来应对动态变化的负载？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">策略</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">通过实时监控服务的关键指标（如CPU、内存使用率），根据预定义的阈值动态增加或减少服务实例数量。这种策略通常采用水平扩展的方式，确保在流量高峰时服务稳定，在流量低谷时节约资源。</div>
          </div>
          <div class="card-source">来源: 微服务高可用性设计原则 -> 2. 自动扩展与弹性伸缩</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">在微服务架构中，像Eureka或Consul这样的注册中心扮演了什么关键角色？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">注册中心用于动态更新服务实例的信息。它与服务发现机制配合，使系统能够动态感知新增或失效的服务实例，并自动调整流量分配，从而确保系统的高可用性。</div>
          </div>
          <div class="card-source">来源: 微服务高可用性设计原则 -> 4. 负载均衡与服务发现</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
